Systematic Testing of Multithreaded Programs

نویسندگان

  • Derek Bruening
  • John Chapin
چکیده

We present a practical testing algorithm called ExitBlock that systematically and deterministically nds program errors resulting from unintended timing dependencies. ExitBlock executes a program or a portion of a program on a given input multiple times, enumerating meaningful schedules in order to cover all program behaviors. Previous work on systematic testing focuses on programs whose concurrent elements are processes that run in separate memory spaces and explicitly declare what memory they will be sharing. ExitBlock extends previous approaches to multithreaded programs in which all of memory is potentially shared. A key challenge is to minimize the number of schedules executed while still guaranteeing to cover all behaviors. Our approach relies on the fact that for a program following a mutual-exclusion locking discipline, enumerating possible orders of the synchronized regions of the program covers all possible behaviors of the program. We describe in detail the basic algorithm and extensions to take advantage of readwrite dependency information and to detect deadlocks.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

The Challenges in Automated Testing of Multithreaded Programs

To take full advantage of parallel architectures, programmers need to be presented with a good set of software tools for developing, debugging, testing, and maintaining their parallel programs. This paper focuses on the challenges that need to be addressed to provide automatic generation of test cases for multithreaded programs , particularly focusing on a program-based, structural testing appr...

متن کامل

Multithreaded Dependence Graphs for Concurrent Java Programs

Understanding program dependencies in a computer program is essential for many software engineering activities including program slicing, testing, debugging, reverse engineering, and maintenance. In this paper, we present a dependence-based representation called multithreaded dependence graph, which extends previous dependence-based representations, to represent program dependencies in a concur...

متن کامل

Systematic Ranking of Thread Schedules for Testing Multithreaded Programs

Concurrency is used pervasively in the development of large programs. However, testing concurrent programs is notoriously hard due to the inherent non-determinism. Recently, many different techniques have been proposed to identify concurrency-related bugs early. An effective but expensive approach is model-checking, where all possible schedules of a program are executed to ascertain the absence...

متن کامل

Detecting Fair Non-termination in Multithreaded Programs

We develop compositional analysis algorithms for detecting nontermination in multithreaded programs. Our analysis explores fair and ultimatelyperiodic executions—i.e., those in which the infinitely-often enabled threads repeatedly execute the same sequences of actions over and over. By limiting the number of context-switches each thread is allowed along any repeating action sequence, our algori...

متن کامل

Instrumentation Technique for Online Analysis of Multithreaded Programs

This paper presents an automatic code instrumentation technique, based on multithreaded vector clocks, for extracting the causal partial order on relevant state update events from a running multithreaded program. This technique is used in a formal testing environment, not only to detect, but especially to predict safety errors in multithreaded programs. The prediction process consists of rigoro...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2000